package ar.edu.utn.frba.disenio.fechas;

import java.util.Calendar;
import java.util.GregorianCalendar;

public final class Fecha {
	Formato formato;
	GregorianCalendar fecha = new GregorianCalendar();
	
	public Fecha(Formato varFormato, String varStrFecha) {
		setFormato(varFormato);
		fecha.setTime(formato.parsearFecha(varStrFecha));
	}
	
	private void setFormato(Formato varFormato){
		formato = varFormato;
	}
	
	public long diferenciaDiasConLaFecha(Fecha otraFecha){
		long diferenciaEnMiliSegundos = Math.abs(enMilisegundos() - otraFecha.enMilisegundos());
		long milisegundosPorDia = 1000 * 60 * 60 * 24;
		return diferenciaEnMiliSegundos / milisegundosPorDia;
	}

	private Calendar getFecha() {
		return fecha;
	}
	
	public long enMilisegundos(){
		return getFecha().getTimeInMillis();
	}
	
	public boolean esAnteriorA(Fecha otraFecha){
		return fecha.compareTo(otraFecha.getFecha()) < 0;
		
	}

	public int getDia() {
		return fecha.get(Calendar.DATE);
	}
	
	public int getMes() {
		return (fecha.get(Calendar.MONTH)+1);
	}
	
	public int getAnio() {
		return fecha.get(Calendar.YEAR);
	}
}
